package com.shujia.day17;

public class Demo05Lambda {
    public static void main(String[] args) {
        /*
            TODO lambda 表达式
                基本格式 () -> {}
                     ()   指定了Lambda 表达式需要的所有参数（对应接口中形参）
                     {}   指定了Lambda 体，即Lambda 表达式要执行的功能
               注意：
                    ① lambda表达式必须有接口,并且接口中有且仅有一个方法
                    ②  lambda表达式中的参数类型和返回值是可以推断出来的 -> 根据赋予的变量来推断

         */

        Lambda1 lambda1 = () -> {
            System.out.println("对应的函数没有方法和返回值");
        };
        lambda1.fun();

        Lambda2 lambda2 = (int a) -> {
            System.out.println(a * a);
        };
        lambda2.fun(4);


        Lambda3 lambda3 = (int a,int b) -> {
            return a * b;
        };
        System.out.println(lambda3.fun(3, 4));


    }

    // 有一个参数，无返回值
    static interface Lambda1{
        void fun();
//        void fun1();
    }

    // 有一个参数，无返回值
    static interface Lambda2{
        void fun(int a);
    }

    // 有多个参数，并且有返回值
    static interface Lambda3{
        int fun(int a,int b);
    }
}
